草庐IT

php Laravel ~ 属性 [controller] 不存在

全部标签

ruby-on-rails - 如果 YAML 文件不存在或无法在 Rails 中加载,请进行救援

我正在使用YAML文件来存储一些secret配置数据。我只是在开发环境中使用该文件。在生产中,我使用ENV变量。这是我现在正在做的事情:我有一个config/confidental.yml文件,看起来像这样:email:user_name:'my_user'password:'my_passw'我有一个config/environments/development.rb文件(除其他外)有这些行:#Mailerconfigemail_confidential=YAML.load_file("#{Rails.root}/config/confidential.yml")['email']c

ruby-on-rails - 检查多个参数的存在

我需要检查多个参数是否存在。目前我写的是ifparams[:p1].present?&¶ms[:p2].present?&¶ms[:p3].present?#Dosomethingend有没有更有效的方法来做到这一点? 最佳答案 您可以使用Enumerable.all?方法:%i(p1p2p3).all?{|key|params[key].present?}另一种选择,如果您需要这些值,它会获取它们并检查是否存在。params.values_at(*%i(p1p2p3)).all?(&:present?)或param

ruby - 检查 Rakefile 中是否存在 rake 任务

我正在寻找一种方法来检查Rakefile中是否存在某个rake任务。我有一个任务依赖项,如果该任务可用,我只想将其作为依赖项包含在内。在这种特殊情况下,该任务仅在Rails项目中可用,但我希望我的rake任务也能在更通用的Ruby应用程序环境中工作(不仅仅是Rails)。我想做这样的事情:iftasks.includes?('assets:precompile')task:archive=>[:clean,:vendor_deps,'assets:precompile']...endelsetask:archive=>[:clean,:vendor_deps]...endend在rak

ruby-on-rails - 为 ActiveAdmin Controller 设置过滤器 before_action

我想向ActiveAdminController添加before_action过滤器。我可以这样做吗:before_action:set_product,only:[:show,:edit,:update,:destroy]privatedefset_product@product=Product.find_by_name(params[:name])end 最佳答案 您可以从controllerdo...endDSL中访问Controller:ActiveAdmin.registerUserdobefore_action:set_

ruby-on-rails - 从 rake 任务调用 Controller

我想从rake任务中调用Controller操作。我的问题是准备http请求的最佳方法是什么?感谢所有提示。编辑:有人有其他提示吗?我试过这个但没有用:controller_obj=Controller.newcontroller.your_method我遇到了这个异常:rakeaborted!uninitializedconstantController编辑2:我试过:sess=ActionController::Integration::Session.newsess.post('/route','codes=3')但是我得到了(我在rake文件中需要'action_control

ruby - 如何为名称以问号结尾的属性定义 setter?

我正在尝试添加一个名为“已启用?”的属性吗?到同时具有getter和setter的模型。但是,当我执行以下操作时:defenabled?=value#..logicgoeshere..end我收到语法错误,意外的“?”,需要“\n”或“;”我应该怎么做? 最佳答案 是的,ruby语法只允许?在方法名称中,如果它是最后一个字符,所以foo?=是无效的。您可以做的一件事是定义enabled?、enable和disable(或enable!和disable!如果你想强调它们是变异方法)。如果这不符合您的需求,您可以只将方法命名为enabl

ruby-on-rails - 如何在 Rails Controller 操作的 RSpec 测试中指定查询字符串?

我有一个名为yearly_csv的操作。在此操作中,我执行两个操作,如需求和供应。defyearly_csvifdemand=='true'demand_csvelsesupply_csvendend我的View中有两个单选按钮来选择其中一个操作。现在我想在RSpec中单独测试每个操作。例如,一个供应规范和另一个需求规范。我的问题是如何将单选按钮值传递给yearly_csv操作(get)? 最佳答案 在RSpec的较新版本中,您必须使用params键声明查询字符串参数:get:yearly_csv,params:{demand:'t

ruby-on-rails - 如何在不使用不同变量名的情况下更新 Rails 模型中实例方法中的属性?

我想在rails的实例方法中更新属性,而不必被迫更改传入的参数,这样我就可以利用rails的自动属性。这是一个例子。理想:status="some_new_status"person.update(status)classPerson我现在要做的:classPerson我明白在这个例子中这并不重要。但是,当我有复杂的更新方法时,如果我可以删除其中的一些代码,它会更清晰。 最佳答案 你应该使用内置的Rails方法:@person.update_attribute(:status,"SomeValue")#nocallbacktrigg

ruby-on-rails - RSpec Controller 测试 : missing template on create

我有一个有趣的情况。我正在测试以下简单的创建操作:#willonlybeaccessedviaAjaxdefcreateclick=Click.new(params[:click])click.save#don'treallycarewhetheritssuccessorfailureend然后我有以下非常简单的Controller规范:require'spec_helper'describeClicksController,"creatingaclick"doit"shouldcreateaclickforevent"doxhr:post,:create,:click=>{:even

ruby-on-rails - rails : Loading custom class from lib folder in controller

我创建了一个名为lib/services/my_service.rb的文件。#/lib/services/my_service.rbclassMyService...end我想在app/controllers/my_controller中使用它classMyController我收到一个错误消息,指出MyService是一个未初始化的常量。我尝试用导入它require'/lib/services/my_service.rb'但是我得到了cannotloadsuchfile--/lib/services/my_service.rb编辑:我尝试使用application.rb自动加载con